1. Technical Field
The present invention relates in general to a system and method for using a plurality of processors as virtual devices. More particularly, the present invention relates to a system and method for using heterogeneous processors as an encryption processor to encrypt and decrypt data on behalf of other processes.
2. Description of the Related Art
In our modern society, software is increasingly becoming one of the most valuable technologies. Software controls devices, such as appliances, automobiles, telephones, and especially computer systems. Computer systems exist in a variety of forms. These forms include traditional desktop and notebook computers, as well as pervasive computing devices such as mobile telephones, and personal digital assistants (PDAs). In addition, software is used for entertainment purposes, such as games designed for personal computers as well as games designed for specialized gaming devices.
Large amounts of time, money, and resources are dedicated towards creating software. Many companies derive all or most of their income from creating software. Software programs sold by these companies include customized software that is written for a particular environment or client, as well as off-the-shelf software that is designed and written for a larger group of users.
Because software is so valuable, and because computers make it easy to create an exact copy of a program, software piracy is widespread. Software pirates range from individual computer users to professionals who deal wholesale with stolen software. Software piracy exists in homes, schools, businesses, and governments.
Anti-piracy measures that have previously been employed include encrypting the software program. In this manner, the user is provided with a “key” for opening the software along with the encrypted software program. Only a user with the right key can decrypt the software. A challenge of this method, however, is that experienced hackers can analyze the memory containing the executable form of the decrypted code and create a non-encrypted version. The non-encrypted version can then be distributed to others who no longer need to use the “key” to open the software.
Another anti-piracy measure is to use a device, often called a “dongle,” that must be used in order for the software to operate. The device includes a key that is checked by the software before the software will operate. One challenge of this method is that users are often forced to have several devices that they must attach to computers prior to loading the software program. Another challenge is that experienced hackers can read the key being provided by the attached device and create a copy of the device or provide the key value using another software program.
Encryption technologies are also used to provide “digital signatures” where a message is encrypted using the user's private key to which only the user has access. When another user decrypts the message using the user's public key (in a public key-private key arrangement), the other user is assured that the message is from the first user and not an imposter.
A challenge of encryption technologies is that if the encryption keys are compromised, a malevolent user can decrypt software or create digital signatures that belong to another user. Because encryption keys are used to safeguard confidential information, their discovery by malevolent users can be disastrous.
What is needed, therefore, is a system and method that performs encryption functions, such as digital signatures, encrypting files, and decrypting files and software, in a way that does not compromise the user's encryption keys. What is further needed is a secondary processor that can securely perform the encryption functions on behalf of another processor, thus freeing the other processor to perform more non-encryption tasks.